Matplotlib绘制漂亮的饼状图

您所在的位置:网站首页 Python饼状图 圆弧宽度设置 Matplotlib绘制漂亮的饼状图

Matplotlib绘制漂亮的饼状图

2024-07-16 16:10| 来源: 网络整理| 查看: 265

python绘图系列文章目录

往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴图像 python绘制柱状图并美化|不同颜色填充柱子 python随机生成数据并用双y轴绘制两条带误差棒的折线图 Python绘制带误差棒的柱状图渐变色填充含数据标注(进阶) python绘制散点图|散点大小和颜色深浅由数值决定

本文目录 python绘图系列文章目录1、 安装和导入 Matplotlib2、 绘制简单的饼状图3、 绘制复杂的饼状图3.1 准备工作 4 、绘制子图和设置坐标轴4.1 运行结果 饼状图是数据可视化中常见的一种类型,能够直观地表示各类别在总体中所占的比例。Matplotlib 是 Python 中常用的数据可视化库,提供了丰富的绘图工具和函数,包括绘制饼状图的方法。

本文将介绍如何使用 Matplotlib 绘制复杂的饼状图,包含多个子图以及两个坐标轴。我们将结合实例代码进行讲解,帮助读者快速掌握饼状图的绘制方法和技巧。

1、 安装和导入 Matplotlib # 使用 pip 安装 Matplotlib pip install matplotlib # 使用 conda 安装 Matplotlib conda install matplotlib

安装完成后,可以在 Python 中导入 Matplotlib 库,通常使用以下方式:

import matplotlib.pyplot as plt 2、 绘制简单的饼状图

为了更好地理解和掌握饼状图的基本绘制方法,我们先来看一个简单的例子。假设有四种动物,它们分别是青蛙、猪、狗和木头,它们分别占据了总动物数量的 15%、30%、45% 和 10%。我们可以使用 Matplotlib 来绘制这个饼状图,并将它们按逆时针顺序从大到小排列。代码如下:

import matplotlib.pyplot as plt # 各类别的标签和比例 labels = ['Frogs', 'Hogs', 'Dogs', 'Logs'] sizes = [15, 30, 45, 10] # 饼状图中各部分的颜色 colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] # 绘制饼状图 plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90) # 显示图形 plt.show()

在上述代码中,我们首先定义了四个动物种类的标签和比例变量,分别存放了它们的名称和所占比例。然后,我们定义了饼状图中各部分的颜色,用于美化图形。最后,使用 plt.pie() 方法绘制了饼状图,并传递了各种参数,如标签、颜色、百分比格式和起始角度。最后,运行 plt.show() 显示图形。绘制完成后,我们将得到一个简单的饼状图。 在这里插入图片描述

3、 绘制复杂的饼状图

在实际情况中,我们可能需要绘制更加复杂和详细的饼状图,以更好地展示数据。下面,我们将介绍如何使用 Matplotlib 绘制一个包含多个子图和坐标轴的复杂饼状图。

3.1 准备工作

首先,我们需要导入一些必要的库和模块:

import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties

其中,NumPy 是 Python 中处理数值计算的常用库,Matplotlib 则是绘制图形的核心库。此外,我们还导入了 FontProperties 类,用于设置字体属性。

接下来,我们定义一些变量,用于存储饼状图中各部分的标签、比例和颜色。代码如下:

# 饼状图中各部分的标签、比例和颜色 labels = ['Frogs', 'Hogs', 'Dogs', 'Logs'] sizes = [15, 30, 45, 10] colors = ['yellowgreen', 'gold', '#FF0000', 'lightcoral'] 4 、绘制子图和设置坐标轴

为了绘制复杂的饼状图,我们需要使用 plt.subplots() 方法创建多个子图,并在每个子图上绘制不同的饼状图。同时,我们还需要设置两个坐标轴,以便更好地展示数据。代码如下:

import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties # The slices will be ordered and plotted counter - clockwise . labels =' Frogs ',' Hogs ',' Dogs ',' Logs ' sizes =[15,30,45,10] colors =['yellowgreen','gold','#FF0000','lightcoral'] explode =(0,0.15,0,0.2) #使饼状图中第2片和第4片裂开 fig = plt.figure(dpi=300) font = FontProperties(fname=r"c:\windows\fonts\times.ttf", size=12) ax = fig.gca () ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font}, autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(1,1), frame = True,) ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font}, autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(-1,1), frame = True ) ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font}, autopct ='%1.lf%%', shadow = True , startangle =90, radius =0.8, center =(-1,-1), frame = True ) ax.pie ( np.random.random (4), explode = explode , labels = labels , colors = colors ,textprops={'fontproperties': font}, autopct ='%1.1f%%', shadow = True , startangle =90, radius =0.8, center =(1,-1), frame = True ) ax.set_xticks ([-1,1]) ax.set_yticks ([-1,1]) ax.set_xticklabels ([" Sunny "," Cloudy "],fontname='Times New Roman',fontsize=14)#设置坐标轴刻度上显示的标签 ax.set_yticklabels ([" Dry "," Rainy "],fontname='Times New Roman',fontsize=14) ax.set_xlim ((-2.5,2.5)) ax.set_ylim ((-2.5,2.5)) # Set aspect ratio to be equal so that pie is drawn as a circle . ax . set _ aspect (' equal ') for tick in ax.get_xticklabels(): tick.set_fontname("Times New Roman") for tick in ax.get_yticklabels(): tick.set_fontname("Times New Roman") # #设置坐标轴刻度 # #设置坐标轴跨度 plt.tight_layout() plt.savefig('.jpg') 4.1 运行结果

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3